package org.demo.db.meta;

import java.sql.SQLException;
import java.util.List;

/**
 * 数据库元数据
 * @author  
 * @date    2010-9-3
 * @file    org.demo.db.meta.DbMeta.java
 */
public interface DbMeta {
	/**
	 * 获取当前用户名称
	 * @return
	 */
	public String getCurrentUser()throws SQLException;
	/**
	 * 获取数据库中所有 schema
	 * @return
	 */
	public List<String> getSchemas()throws SQLException;
	/**
	 * 获取表信息
	 * @return
	 * @throws SQLException
	 */
	public List<Table> getTables()throws SQLException;
	/**
	 * 获取列信息
	 * @param schema
	 * @param table
	 * @return
	 * @throws SQLException
	 */
	public List<Field> getFields(
			String schema,String table)throws SQLException;
	/**
	 * 获取主键信息
	 * @param schema
	 * @param table
	 * @return
	 * @throws SQLException
	 */
	public List<Constraint> getPrimaryKeys(
			String schema,String table)throws SQLException;
	/**
	 * 获取外键信息
	 * @param schema
	 * @param table
	 * @return
	 * @throws SQLException
	 */
	public List<Constraint> getForeignKeys(
			String schema,String table)throws SQLException;
	/**
	 * 获取索引信息
	 * @param schema
	 * @param table
	 * @return
	 * @throws SQLException
	 */
	public List<Index> getIndexes(
			String schema,String table)throws SQLException;
	/**
	 * 关闭连接
	 */
	public void close();
}
